package com.ak.kaoyan.utils;

import lombok.extern.slf4j.Slf4j;

import java.io.*;

@Slf4j
public class FileUtil {

    /**
     * 写文件
     *
     * @param content  文件内容
     * @param filePath 路径地址
     */
    public static void writeFile(String content, String filePath) {
        try {
            BufferedWriter out = new BufferedWriter(new FileWriter(filePath));
            out.write(content);
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static String readFile(String path) {
        try {
            //从文件地址中读取内容到程序中
            //1、建立连接
            InputStream is = new FileInputStream(path);
            //2、开始读取信息

            //方法2：定义数组，循环读取
            //先定义一个字节数组存放数据
            byte[] b = new byte[5];//把所有的数据读取到这个字节当中
            //声明一个int存储每次读取到的数据
            int i = 0;
            //定义一个记录索引的变量
            int index = 0;
            //循环读取每个数据
            while ((i = is.read()) != -1) {//把读取的数据放到i中
                b[index] = (byte) i;
                index++;
            }
            //关闭流
            is.close();
            //把字节数组转成字符串
            return new String(b);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            //系统强制解决的问题：文件没有找到
            e.printStackTrace();
        } catch (IOException e) {
            //文件读写异常
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 写文件到路径之中
     *
     * @param input 需要写的内容
     * @param path  地址
     */
    public static void writeInput(String input, String path) {
        File file;
        BufferedWriter out = null;
//        log.info();
        System.out.println("文件路径" + path);
        try {
            file = new File(path);
            if (!file.getParentFile().exists()) {
                log.info("没有目录正在创建");
                file.getParentFile().mkdirs();
            }
            // 文件创建成功
            file.createNewFile();
            out = new BufferedWriter(new FileWriter(file));
            out.write(input);
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
            log.info(e.getMessage());
        } finally {
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void writeByte(byte[] file, String path) {
        FileOutputStream fos = null;
        File f;
        try {
            f = new File(path);
            if (!f.getParentFile().exists()) {
                f.getParentFile().mkdirs();
            }
            // 文件创建成功
            f.createNewFile();
            fos = new FileOutputStream(path);
            fos.write(file);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

